tools/tests: Add syntax check for different versions of python
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 28 Jul 2009 15:38:08 +0000 (16:38 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 28 Jul 2009 15:38:08 +0000 (16:38 +0100)
From: Andreas Florath <xen@flonatel.org>
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
.hgignore
tools/tests/regression/Makefile [new file with mode: 0644]
tools/tests/regression/README [new file with mode: 0644]
tools/tests/regression/scripts/build_python.sh [new file with mode: 0644]
tools/tests/regression/scripts/check_python_syntax.sh [new file with mode: 0644]
tools/tests/regression/scripts/download_python.sh [new file with mode: 0644]

index 77b68aef5a8c6fa88b50a3197147eb71385875d4..d62e492c7b1cbcd4aa4e986fb075b968673dfa77 100644 (file)
--- a/.hgignore
+++ b/.hgignore
 ^tools/tests/blowfish\.h$
 ^tools/tests/test_x86_emulator$
 ^tools/tests/x86_emulate$
+^tools/tests/regression/installed/.*$
+^tools/tests/regression/build/.*$
+^tools/tests/regression/downloads/.*$
 ^tools/vnet/Make.local$
 ^tools/vnet/build/.*$
 ^tools/vnet/gc$
diff --git a/tools/tests/regression/Makefile b/tools/tests/regression/Makefile
new file mode 100644 (file)
index 0000000..fa0e062
--- /dev/null
@@ -0,0 +1,83 @@
+#
+# Sets up some regression applications
+# Runs regression tests
+#
+# To run this, at least the basic build / development environment must
+# be installed (gcc, ...)
+#
+XEN_ROOT=${PWD}/..
+
+PYTHON_VERSIONS=python-2.3 python-2.4 python-2.5 python-2.6 python-3.1
+
+.PHONY: all
+all: check-python-syntax
+
+.PHONY: check-python-syntax
+check-python-syntax: runtime-environment
+       @(set -e && for p in ${PYTHON_VERSIONS}; do \
+         ${XEN_ROOT}/tests/scripts/check_python_syntax.sh ${XEN_ROOT} $$p; done)
+
+.PHONY: runtime-environment
+runtime-environment: ${PYTHON_VERSIONS}
+
+.PHONY: dist-clean
+dist-clean:
+       rm -fr ${XEN_ROOT}/tests/installed ${XEN_ROOT}/tests/downloads \
+               ${XEN_ROOT}/tests/build
+
+### Python 2.3
+
+.PHONY: python-2.3
+python-2.3: ${XEN_ROOT}/tests/installed/python-2.3/bin/python2.3
+
+${XEN_ROOT}/tests/installed/python-2.3/bin/python2.3: \
+       ${XEN_ROOT}/tests/downloads/Python-2.3.7.tgz
+       @${XEN_ROOT}/tests/scripts/build_python.sh ${XEN_ROOT} 2.3 2.3.7
+${XEN_ROOT}/tests/downloads/Python-2.3.7.tgz:
+       @${XEN_ROOT}/tests/scripts/download_python.sh ${XEN_ROOT} 2.3.7
+
+### Python 2.4
+
+.PHONY: python-2.4
+python-2.4: ${XEN_ROOT}/tests/installed/python-2.4/bin/python2.4
+
+${XEN_ROOT}/tests/installed/python-2.4/bin/python2.4: \
+       ${XEN_ROOT}/tests/downloads/Python-2.4.6.tgz
+       @${XEN_ROOT}/tests/scripts/build_python.sh ${XEN_ROOT} 2.4 2.4.6
+${XEN_ROOT}/tests/downloads/Python-2.4.6.tgz:
+       @${XEN_ROOT}/tests/scripts/download_python.sh ${XEN_ROOT} 2.4.6
+
+### Python 2.5
+
+.PHONY: python-2.5
+python-2.5: ${XEN_ROOT}/tests/installed/python-2.5/bin/python2.5
+
+${XEN_ROOT}/tests/installed/python-2.5/bin/python2.5: \
+       ${XEN_ROOT}/tests/downloads/Python-2.5.4.tgz
+       @${XEN_ROOT}/tests/scripts/build_python.sh ${XEN_ROOT} 2.5 2.5.4
+${XEN_ROOT}/tests/downloads/Python-2.5.4.tgz:
+       @${XEN_ROOT}/tests/scripts/download_python.sh ${XEN_ROOT} 2.5.4
+
+### Python 2.6
+
+.PHONY: python-2.6
+python-2.6: ${XEN_ROOT}/tests/installed/python-2.6/bin/python2.6
+
+${XEN_ROOT}/tests/installed/python-2.6/bin/python2.6: \
+       ${XEN_ROOT}/tests/downloads/Python-2.6.2.tgz
+       @${XEN_ROOT}/tests/scripts/build_python.sh ${XEN_ROOT} 2.6 2.6.2
+${XEN_ROOT}/tests/downloads/Python-2.6.2.tgz:
+       @${XEN_ROOT}/tests/scripts/download_python.sh ${XEN_ROOT} 2.6.2
+
+### Python 3.0.1 has reached end of life and is not (longer) supported
+
+### Python 3.1
+
+.PHONY: python-3.1
+python-3.1: ${XEN_ROOT}/tests/installed/python-3.1/bin/python3.1
+
+${XEN_ROOT}/tests/installed/python-3.1/bin/python3.1: \
+       ${XEN_ROOT}/tests/downloads/Python-3.1.tgz
+       @${XEN_ROOT}/tests/scripts/build_python.sh ${XEN_ROOT} 3.1 3.1
+${XEN_ROOT}/tests/downloads/Python-3.1.tgz:
+       @${XEN_ROOT}/tests/scripts/download_python.sh ${XEN_ROOT} 3.1
diff --git a/tools/tests/regression/README b/tools/tests/regression/README
new file mode 100644 (file)
index 0000000..06b26b0
--- /dev/null
@@ -0,0 +1,39 @@
+
+Regression Test Environment for Xen
+-------------------------------------
+
+This is an initial regression tool environment for Xen.
+
+With the help of the Makefile, it is possible to compile a couple of
+different python versions and check all .py files against all verions
+for syntax errors.  Note that due to the dynmic of python not all
+syntax errors might be detected.
+
+Currently the following versions of python are supported:
+2.3.7 2.4.6 2.5.4 2.6.2 3.1
+
+
+Usage
+-----
+
+To download all supported versions of python, compile them, install
+them and run a basic syntax check, run
+
+$ make
+
+(The download and compilation of python is only done if not already
+available.)
+
+To delete all automatically build files:
+
+$ make dist-clean
+
+
+
+Runing unittests with a specific version
+----------------------------------------
+
+This does not work at the moment, because a lot of additional python
+packages are needed for this (which are currently not automatically
+build).
+
diff --git a/tools/tests/regression/scripts/build_python.sh b/tools/tests/regression/scripts/build_python.sh
new file mode 100644 (file)
index 0000000..b9b6f9f
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/bash
+#
+# This script builds python in the dir 
+# installed/python-${DEST} from package downloads/Python-{PKG_VERS}.tgz
+#
+
+set -e
+
+XEN_ROOT=$1
+DEST=$2
+PKG_VERS=$3
+
+SUB_MAKES_MINUS_J=-j4
+
+BUILD_DIR=${XEN_ROOT}/tests/build
+
+mkdir -p ${BUILD_DIR}
+(cd ${BUILD_DIR} && tar -xf ${XEN_ROOT}/tests/downloads/Python-$PKG_VERS.tgz)
+(cd ${BUILD_DIR}/Python-$PKG_VERS &&
+ ./configure --enable-shared --enable-ipv6 --without-cxx \
+       --with-threads --prefix=${XEN_ROOT}/tests/installed/python-$DEST &&
+make ${SUB_MAKES_MINUS_J} &&
+make install)
+rm -fr ${BUILD_DIR}/Python-$PKG_VERS
diff --git a/tools/tests/regression/scripts/check_python_syntax.sh b/tools/tests/regression/scripts/check_python_syntax.sh
new file mode 100644 (file)
index 0000000..8f7ce4e
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/bash
+#
+# Checks the syntax of all .py files
+# (compiles them into .pyc files)
+#
+
+XEN_ROOT=$1
+p=$2
+
+echo "Syntax check for $p"
+PYTHON_EXECUTABLE=`echo $p | tr -d "-"`
+export LD_LIBRARY_PATH=${XEN_ROOT}/tests/installed/$p/lib
+export PATH=${XEN_ROOT}/tests/installed/$p/bin:$PATH
+# -m is available starting with python 2.4
+# When support for 2.3 (and earlier) is dropped,
+# the following line will do.
+# ${PYTHON_EXECUTABLE} -m compileall -f -q -x ".*\.hg.*|^\.\./tests/installed.*" ..
+${PYTHON_EXECUTABLE} ${XEN_ROOT}/tests/installed/$p/lib/${PYTHON_EXECUTABLE}/compileall.py -f -q -x ".*\.hg.*|.*/tests/installed.*" ..
+exit $?
diff --git a/tools/tests/regression/scripts/download_python.sh b/tools/tests/regression/scripts/download_python.sh
new file mode 100644 (file)
index 0000000..6329dba
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/bash
+#
+# Downloads python with version $1 and stores in into the downloads dir.
+#
+
+set -e
+
+XEN_ROOT=$1
+VERSION=$2
+
+mkdir -p ${XEN_ROOT}/tests/downloads
+wget -q -O ${XEN_ROOT}/tests/downloads/Python-${VERSION}.tgz http://www.python.org/ftp/python/${VERSION}/Python-${VERSION}.tgz